<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 500px;
            height: 500px;
            border: 2px solid black;
            display: flex;
            margin: 10px auto;
            flex-direction: column;
        }
        .box div{
            width: 100px;
            height: 100px;
            border: 1px dashed rebeccapurple;
            box-sizing: border-box;
        }
        /* .box div:nth-child(3) */

        /* align-self 属性定义flex子项单独在侧轴（纵轴）方向上的对齐方式。 */
        .div1{
            align-self: flex-start;
            /*  元素位于容器的开头。
                弹性盒子元素的侧轴（纵轴）起始位置的边界紧靠住该行的侧轴起始边界。 */
        }
        .div2{
            align-self: flex-end;
            /*  元素位于容器的结尾。
                弹性盒子元素的侧轴（纵轴）起始位置的边界紧靠住该行的侧轴结束边界。 */
        }
        .div3{
            align-self: center;
            /*  元素位于容器的中心。
                弹性盒子元素在该行的侧轴（纵轴）上居中放置。
                （如果该行的尺寸小于弹性盒子元素的尺寸，则会向两个方向溢出相同的长度） */
        }
        .div4{
            align-self: baseline;
            /*  元素位于容器的基线上。
                如弹性盒子元素的行内轴与侧轴为同一条，
                则该值与'flex-start'等效。
                其它情况下，该值将参与基线对齐。 */
        }
        .box .div5{
            align-self: stretch;
            width: auto;
            /*  元素被拉伸以适应容器。
                如果指定侧轴大小的属性值为'auto'，
                则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸，
                但同时会遵照'min/max-width/height'属性的限制。 */
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="div1">1111</div>
        <div class="div2">2222</div>
        <div class="div3">3333</div>
        <div class="div4">4444</div>
        <div class="div5">5555</div>
    </div>
</body>
</html>